/**
 * Appbasetype Appbasetype
 * 
 * @author ice1938@qq.com 2019-11-28 14:13:14
 * 
 */

$(document).ready(function($) {
	obj.init();
	obj.drawDatatable();
	obj.create_validator();
});

var tt = null;
var validator = null;
var obj = {
	drawDatatable : function(data) {
		if (tt != null) {
			return;
		}
		var opt = {
			// paging : true,
			// lengthMenu: [[5, 10, -1], [5, 10, "All"]],
			// lengthChange : false,
			pageLength : 10,
			pagingType : 'numbers',// numbers,simple,simple_numbers,full,full_numbers,first_last_numbers
			searching : false,
			info : true,
			scrollCollapse : true,
			autoWidth : true,
			processing : true,
			serverSide : true,
			dom : 'tipl',
			ordering : true,
			order : [ [ 2, 'desc' ] ],
			paging : true,
			searching : false,
			language : {
				url : $('#datatables_i18n').prop("src")
			},
			ajax : {
				type : 'post',
				url : $('#search_btn').data('href'),
				data : function(d) {
					// serializeObj 框架自扩展
					var param = $("#searchForm").serializeObj();
					$.extend(d, param);
				}
			},
			// 第一列显示行号
			rowCallback : function(row, data, index) {
				var info = tt.page.info();
				if (typeof (info) != 'undefined') {
					$('td:eq(0)', row).html(index + info.start + 1);
				} else {
					$('td:eq(0)', row).html(index + 1);
				}
			},
			rowId : 'typeCode',
			columns : columns
		};

		tt = $('#tt').DataTable(opt);
		$('#tt').data('cur_row_id', []);
		// 注册表格事件
		$('#tt').on('draw.dt', function(e) {
			if ($.isArray($('#tt').data('cur_row_id'))) {
				for (i = 0; i < $('#tt').data('cur_row_id').length; i++) {
					var id = $('#tt').data('cur_row_id')[i];
					$('#tt #' + id).addClass('selected');
				}
			}
		});
		// 绑定单击事件切换行样式
		$('#tt tbody').on('click', 'tr', function(e) {
			// 反向选择
			// $(this).toggleClass('selected');
			if (e.target.type == 'button') {
				if (!$(this).hasClass('selected')) {
					tt.$('tr.selected').removeClass('selected');
					$(this).addClass('selected');
					$('#tt').data('cur_row_id', tt.row(this).id());
					var ids = [];
					ids.put(tt.row($(this).parents('tr')).id());
					$('#tt').data('cur_row_id', ids);
				}
			}
		});
		$('#tt tbody').on('click', '#edit_btn', function(e) {
			var cur_data = tt.row($(this).parents('tr')).data();
			$('#form_modal').data('href', $(e.target).data('href'));
			// 编码
			$("#form_modal #typeCode").val(cur_data.typeCode);
			// 名称
			$("#form_modal #typeName").val(cur_data.typeName);
			$('#form_modal').modal('show');
		});
		var deleteBtnHandler = function(e) {
			$('#remove_modal').data('href', $(e.target).data('href'));
			var cur_data = tt.row($(this).parents('tr')).data();
			$('#remove_modal').data('info', [ cur_data ]);
			$('#remove_modal').modal('show');
		};
		$('#tt tbody').on('click', '#delete_btn', deleteBtnHandler);
	},
	init : function() {
		$(".form_datetime").datetimepicker({
			format : "yyyy-mm-dd hh:ii:ss",
			autoclose : true,
			todayBtn : true,
			language : 'zh-CN'
		});
		// 删除 和 添加事件
		$("#add_btn").on("click", function(e) {
			$('#form_modal').data('href', $(e.target).data('href'));
			// 编码
			$("#form_modal #typeCode").val('');
			// 名称
			$("#form_modal #typeName").val('');
			$('#form_modal').modal('show');
		});
		// 删除 和 添加事件
		$("#batch_delete_btn").on("click", function(e) {
			$('#remove_modal').data('href', $(e.target).data('href'));
			$('#remove_modal').data('info', tt.rows('.selected').data());
			$('#remove_modal').modal('show');
		});
		// 查询按钮事件
		$("#search_btn").on("click", function(e) {
			// 防止重复提交
			$(e.target).prop("disabled", true);
			tt.clear();
			// 重置分页记录
			tt.ajax.reload(function() {
				$(e.target).prop("disabled", false);
			}, false);
		});
		// export_xlsx_btn导出按钮
		$("#export_xlsx_btn").on("click", function(e) {
			var url = $(e.target).data('href');
			$(this).prop("disabled", true);
			var params = $("#searchForm").serializeObj()
			params.fileName = 'eee';
			window.open(url + '?' + $.param(params));
			$(this).prop("disabled", false);
		});
		/** 页面定义控件（非JS框架生成的控件）事件注册和定义函数 */
		// 编辑&增加 窗口显示之前恢复验证状态
		$('#form_modal').on('show.bs.modal', function() {
			// 把前面验证的 FORM 恢复到验证前原来的状态
			if (validator == null) {
				obj.create_validator();
			} else {
				validator.resetForm();
			}
		});
		// 编辑&增加 窗口shown 事件行为
		$('#form_modal').on('shown.bs.modal', function() {
			// $("#department_workshop_" +
			// flag).val('').trigger("change.select2");
			// $("#department_workshop_" + flag).scombobox('val','');
		});

		// 编辑&增加保存按钮事件
		$("#form_modal #confirm_btn").on("click", function(e) {
			// 验证 form 返回成功还是失败。
			if (!validator.form()) {
				return;
			}
			var data = {}
			data.typeCode = $("#form_modal #typeCode").val();// 编码
			data.typeName = $("#form_modal #typeName").val();// 名称
			$.ajax({
				url : $('#form_modal').data('href'),
				type : 'POST',
				// scriptCharset : 'utf-8',
				data : JSON.stringify(data),
				// dataType : 'json',
				contentType : "application/json",
				beforeSend : function(xhr) {
					$(e.target).prop("disabled", true);
				},
				complete : function(xhr, status) {
					$(e.target).prop("disabled", false);
				},
				success : function(data) {
					$('#search_btn').trigger('click');
					$.dialog.tips(data.message, 5);
					$('#form_modal').modal('hide');
				},
				error : ajaxerror
			});
		});

		// 删除 窗口shown 事件行为
		$('#remove_modal').on('show.bs.modal', function() {
			// 获得选中行数据
			var data = $('#remove_modal').data('info');
			var rowdatalength = data.length;
			if (rowdatalength == 0) {
				$('#remove_modal .modal-body').html('请选择一条进行删除.');
				return;
			} else {
				var infos = '';
				for (var i = 0; i < rowdatalength; i++) {
					// TODO infos += '['+data[i].title+'] ';
					infos += '[' + data[i].typeCode + '] ';
				}
				$('#remove_modal .modal-body').html('您确定要删除么(' + infos + ')?');
				return;
			}
		});
		// 批量删除按钮事件
		$("#remove_modal #confirm_btn").on("click", function(e) {
			var ids = [];
			var data = $('#remove_modal').data('info');// tt.rows('.selected').data();
			if (data.length == 0) {
				return;
			}
			for (var i = 0; i < data.length; i++) {
				ids.push(data[i].typeCode);
			}
			// var ids = tt.rows().ids();
			$.ajax({
				type : 'post',
				url : $("#remove_modal").data('href'),
				data : JSON.stringify(ids),
				// dataType : 'json',
				contentType : "application/json",
				/*
				 * data : { data:JSON.stringify(ids) },
				 */
				beforeSend : function(xhr) {
					$(e.target).prop("disabled", true);
				},
				complete : function(xhr, status) {
					$(e.target).prop("disabled", false);
				},
				success : function(data) {
					$('#remove_modal').modal('hide');
					$.dialog.tips(data.message, 5);
					$('#search_btn').trigger('click');
				},
				error : ajaxerror
			});
			// tt.row('.selected').remove().draw(false);
		});
	},

	/**
	 * 创建验证控件
	 */
	create_validator : function() {
		validator = $("#form_modal form").validate({
			// 提交时验证。设置为 false 就用其他方法去验证
			onsubmit : false,
			rules : {
				type_name : "required"
			},
			messages : {}
		});
	}
};